package com.huike.pmps.config.advice;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.Configuration;

/**
 * 作者：谌贵斌(黑桃K)
 * 日期: 2888-08-08
 * 老师QQ: 272488352
 * 官方QQ交流群: 377748272
 * 刀客程序员官网：http://www.daoke360.com
 * 刀客程序员淘宝旗舰店：https://daoke360.taobao.com/
 */

/**
 * 测试通过
 */
@Configuration
//@Aspect
public class OperationLogAdvice {
    //切入点表达式
    //@Pointcut("execution(* com.daoke360.service.impl.*.*(..))")
    private void pointCut() {
    }

    //环绕通知
    //@Around("pointCut()")
    public Object aroundAdvice(ProceedingJoinPoint pjp) {
        System.out.println("环绕通知在执行");
        Object rtValue = null;
        try {
            Object[] args = pjp.getArgs();//得到方法执行所需的参数
            System.out.println("正在进行操作");
            rtValue = pjp.proceed(args);//明确调用业务层方法（切入点方法）
            System.out.println("操作成功");
            return rtValue;
        } catch (Throwable t) {
            System.out.println("操作发生异常");
            throw new RuntimeException(t);
        }
    }

}
